<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 9.利用函数封装冒泡排序 从大到小排列[1,2,3,4,5,6,7,8,9,10,11,12,14,15,18,23,13,12,45,6,778,45,345] 

        // function getArr(arr) {
        //     for (var i = 0; i < arr.length - 1; i++) {
        //         for (var j = 0; j < arr.length - i - 1; j++) {
        //             if (arr[j] < arr[j + 1]) {
        //                 var temp = arr[j]
        //                 arr[j] = arr[j + 1]
        //                 arr[j + 1] = temp
        //             }
        //         }
        //     }
        //     return arr

        // }
        // var re = getArr([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 18, 23, 13, 12, 45, 6, 778, 45, 345])
        // console.log(re);
        // 内置对象 直接实现冒泡排序 记住即可
        // var arr1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 18, 23, 13, 12, 45, 6, 778, 45, 345]
        // arr1.sort(function (a, b) {
        //     return a - b
        // })
        // console.log(arr1);
        // 颠倒数组 [1,2,3,4,5,6,7,8,9,10,11,12,14,15,18,23,13,12,45,6,778,45,345]

        // var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 18, 23, 13, 12, 45, 6, 778, 45, 345]
        // // var newArr = []
        // // for (var i = arr.length - 1; i >= 0; i--) {
        // //     newArr[newArr.length] = arr[i]
        // // }
        // // console.log(newArr);
        // //   内置对象方法直接实现颠倒
        // arr.reverse()
        // console.log(arr);

        // 数组索引去重 ['c', 'a', 'z', 'a', 'x', 'a', 'x', 'c', 'b']
        // var newArr = []
        // var arr = ['c', 'a', 'z', 'a', 'x', 'a', 'x', 'c', 'b']
        // for (var i = 0; i < arr.length; i++) {
        //  if( newArr.indexOf(arr[i]) === -1) {
        //     newArr.push(arr[i])
        //  }
        // }
        // console.log(newArr);
        // 查找字符串'abcoefoxyozzopp'中所有o出现的位置以及次数
        // (1)像这种查找元素 判断条件比较的复杂的 推荐使用while循环
        // (2)根据indexOf属性的特性 需要声明一个变量赋值为起始索引(第一个要查找的元素)
        // (3)因为要查很多次就需要循环 indexOf查找元素时如果不存在会返回-1的特性 （起始索引 !== -1） 就代表找到了 然后输出所有返回的索引（位置）
        // (4)要想继续往后查找 必须更改查找的起始位置 即掠过起始索引（起始索引 + 1） 就会继续后面的查找符合条件的o 并把每一次查找到（o）的结果保存到起始变量
        // 出现的总次数
        // (5)声明一个为0的新变量 在打印代码下加上 变量++ 递增即可（打印几次就会加几次 即 变量==总打印次数==总的出现次数）然后循环外输出即可
        // var str = 'abcoefoxyozzopp'
        // var oneo = str.indexOf('o')
        // var num = 0
        // while (oneo !== -1) {
        //     console.log(oneo);
        //     num++
        //     oneo = str.indexOf('o', oneo + 1)
        // }
        // console.log(num);

        // 判断一个字符串 'abcoefoxyozzopp'中出现次数最多的字符 并统计次数
        // 核心算法 利用charAt()遍历这个字符串
        // 把每个字符都存储起来，然后把每一个字符都看做空对象的属性 一开始属性都没有属性值所以都赋值为1 循环直到有了重复的就自加1
        // 遍历对象 得到最大值和该字符
        // var str = 'abcoefoxyozzopp'
        // var o = {}
        // for (var i = 0; i < str.length; i++) {
        //     var chars = str.charAt(i)
        //     if (o[chars]) {
        //         o[chars]++
        //     } else {
        //         o[chars] = 1
        //     }
        // }
        // console.log(o);
        // var max = 0
        // var ch = ''
        // for (var k in o) {
        //     if (o[k] > max) { 
        //         max = o[k]
        //         ch = k
        //     }
        // }

        // console.log(max);
        // console.log(ch);



    </script>

</body>

</html>